package com.tuozixuan.javafx.stage;


import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.stage.WindowEvent;

public class StageDemo extends Application {
	
    public static void main(String[] args) {
        launch(args);
    }

	@Override
	public void start(Stage primaryStage) throws Exception {
		
		Text text = new Text(10, 40, "Hello World!");
        text.setFont(new Font(40));
        Scene scene = new Scene(new Group(text), 300, 300);

        // 设置左上角图标
        primaryStage.getIcons().add(new Image("see.png"));
        primaryStage.getIcons().addAll(new Image("see.png"), new Image("see.png"));
        
        // 设置标题
        primaryStage.setTitle("Welcome to JavaFX!");
        // true表示最小化窗口，相当于点击窗口上的最小化图标
        primaryStage.setIconified(false);
        // true表示最大化窗口，相当于点击窗口最大化图标
        primaryStage.setMaximized(false);
        // 是否可以通过鼠标拖动改变窗体大小
        primaryStage.setResizable(true);
        // 窗体的最大宽度和盖度
        primaryStage.setMaxWidth(500);
        primaryStage.setMaxHeight(500);
        // 设置不透明度的值(0.0到1.0)
        primaryStage.setOpacity(0.9);
        // 设置置顶
        primaryStage.setAlwaysOnTop(true);
        // 设置窗体的坐标，X表示距屏幕左边的距离，Y表示距屏幕顶端的距离
        primaryStage.setX(100);
        primaryStage.setY(200);
        // 设置窗体的x和y坐标使其位于屏幕中心
        primaryStage.centerOnScreen();
        
        primaryStage.setOnHiding(event -> {
        	System.out.println("primaryStage hiding...");
        });
        primaryStage.setOnHidden(event -> {
        	System.out.println("primaryStage hidden...");
        });
        primaryStage.setOnShowing(event -> {
        	System.out.println("primaryStage showing...");
        });
        primaryStage.setOnShown(event -> {
        	System.out.println("primaryStage shown...");
        });
        primaryStage.setOnCloseRequest(event -> {
        	System.out.println("primaryStage close...");
        });
        
        primaryStage.fireEvent(new WindowEvent(primaryStage, WindowEvent.WINDOW_CLOSE_REQUEST));
        
        // 隐藏顶部状态
        primaryStage.initStyle(StageStyle.UNDECORATED);
        // 顶部状态栏设为透明，如果不支持，则降级为StageStyle.UNDECORATED
        primaryStage.initStyle(StageStyle.TRANSPARENT);
        // 使用平台装饰，不支持则降级为StageStyle.DECORATED
        primaryStage.initStyle(StageStyle.UNIFIED);
        // 隐藏顶部图标、缩小和放大按钮
        primaryStage.initStyle(StageStyle.UTILITY);
        // 显示顶部状态
        primaryStage.initStyle(StageStyle.DECORATED);
        
        primaryStage.setScene(scene);
        primaryStage.sizeToScene();
        primaryStage.show();
        
        // 隐藏窗体
        primaryStage.hide();
        primaryStage.show();
        
        // 关闭窗口，相当于点击窗口关闭图标
        //primaryStage.close();
	}

}
